package com.tbit.uqbike.service.base;

import com.tbit.uqbike.object.pojo.vo.ScreenLineChartVO;
import com.tbit.uqbike.object.pojo.vo.ScreenPieVO;
import com.tbit.uqbike.object.value.LoginInfo;
import com.tbit.uqbike.object.view.NameObject;

import java.util.List;

/**
 * sugar大屏
 *
 * @Author:BUGTian
 * @DATE: 2022/12/7
 */
public interface ScreenService {
    int SUM = 0;
    int CNT = 1;

    /**
     * 平台用户分布
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> userDistribution(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 单个参数返回
     *
     * @param login
     * @param accountIdList
     * @param dataType
     * @param flag
     * @param brandId
     * @return
     */
    Long singleResult(LoginInfo login, List<Integer> accountIdList, Integer dataType, int flag, Integer brandId);

    /**
     * 单个参数返回 （AccountDayStat表）
     * @param login 登录用户
     * @param accountIdList 区域id列表
     * @param dataType 数据类型
     * @param flag 金额/数量
     * @param brandId 品牌id
     * @param startDataDate 开始时间
     * @param endDateDate 结束时间
     * @return
     */
    Long singleResultToAccountDayStat(LoginInfo login, List<Integer> accountIdList, Integer dataType, int flag, Integer brandId, Integer startDataDate, Integer endDateDate);

    /**
     * 平台订单情况
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> orderCondition(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 交易数据
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> transactionData(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 昨日同比
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    Double yesterdaySameRatio(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 昨日环比
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    Double yesterdayRingRatio(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 上月同比
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    Double lastMonthSameRatio(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 上月环比
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    Double lastMonthRingRatio(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 累计行驶里程
     *
     * @param login
     * @param accountIdList
     * @return
     */
    String accumulatedMileage(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 节能减排
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    String reduceEmissions(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 约等于种树xx棵
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    String plantTrees(LoginInfo login, List<Integer> accountIdList, Integer brandId);


    /**
     * 投放车辆饼图
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> putOnMachinePieChart(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 运营车辆饼图
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> operationalMachinePieChart(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 骑行和待租车辆饼图
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> ridingMachinePieChart(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 异常车辆饼图
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> abnormalMachinePieChart(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 车辆电量饼图
     *
     * @param login
     * @param accountIdList
     * @return
     */
    List<NameObject> machineBattery(LoginInfo login, List<Integer> accountIdList);

    /**
     * 车辆空闲时间
     *
     * @param login
     * @param accountIdList
     * @return
     */
    List<NameObject> machineIdle(LoginInfo login, List<Integer> accountIdList);

    /**
     * 告警信息概览
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> alarmMsg(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 告警信息概览折线图
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    ScreenLineChartVO alarmMsgLineChart(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 总流水分布概况
     *
     * @param login
     * @param accountIdList
     * @return
     */
    List<ScreenPieVO> pipelineDistribution(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     * 运营区域收入排行
     *
     * @param login
     * @param accountIdList
     * @param brandId
     * @return
     */
    ScreenLineChartVO rankingOfOperatingIncome(LoginInfo login, List<Integer> accountIdList, Integer brandId);

    /**
     *  今日新增用户
     * @param login
     * @param accountIdList
     * @param dataType
     * @param cnt
     * @param brandId
     * @return
     */
    Long todayNewUser(LoginInfo login, List<Integer> accountIdList, Integer dataType, int cnt, Integer brandId);

    /**
     * 今年累计流水
     * @param login 登录用户
     * @param accountIdList 区域id列表
     * @param brandId 品牌id
     * @return
     */
    Long totalFlowWater(LoginInfo login, List<Integer> accountIdList, Integer brandId);
}
